<!DOCTYPE html>
<!-- 声明html5标准 -->
<html lang='zh'>
<!-- 这个主要是给搜索引擎看的，搜索引擎不会去判断该站点是中文站还是英文站，所以这句话就是让搜索引擎知道，你的站点是中文站
对html页面本身不会有影响,这些现在都是html规范，你的页面越规范，就越容易被收录 -->

<head>
    <meta charset='UTF-8'>
    <!-- 声明使用UTF-8 Unicode编码，UTF-8编码优先采用的编码 -->
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <!--  X-UA-Compatible是针对IE新加的一个设置 声明兼容到edge -->
    <meta name='viewport' content='width=device-width, initial-scale=no'>
    <!--width:可视区域的宽度，值可为数字或关键词device-width intial-scale:页面首次被显示是可视区域的缩放级别，取值1.0则页面按实际尺寸显示，无任何缩放 -->
    <title>Document</title>
    <!-- 引入vue.js -->
    <script src='./js/vue.js'></script>

</head>

<body>
    <div id='root'>
        <!-- 步骤2接收数据 在子组件标签内书写@刚才定义的自定义事件类型="函数",在父组件的methods里面去定义函数,函数有一个形参
            这个形参就是穿过来的数据
        -->
        <templ @passvalue="addMessage" @add123="add"></templ>

        <div v-for="(value,key,index) in sonText" :key='index'>
            value: {{value}} key:{{key}} index:{{index}}
        </div>
        {{obj.name}}
        <!-- 自己在data里面定义的值 -->
        {{obj}}
        <!-- 子组件传过来的值 -->
        {{sonText.name}}
    </div>
    <template id="templ">
        <div>
            <button @click="passValue">点击我向父组件传值</button>
            <div></div>
        </div>
    </template>
    <script>
        Vue.component("templ", {
            template: "#templ",
            data() {
                return {}
            },
            methods: {
                passValue() {
                    // 子组件向父组件传值步骤1:使用this.$emit(),第一个参数为自定义事件类型,第二个参数为子组件向父组件穿的数据
                    // 步骤1完成,发送成功
                    this.$emit("passvalue", 123)
                }
            },
            created() {
                this.$emit("add123", { name: "天亮教育", address: "方大" })
            }

        })
        // 子组件向父组件传值
        let vue = new Vue({
            // 选择控制区域,通过选择器去选到他，工作中一般使用id选择器;
            el: '#root',
            // 数据储存位置
            data: {
                sonText: {},
                obj: { name: "浩林" }
            },
            // 方法的储存位置
            methods: {
                addMessage(param) {
                    console.log(param)
                    debugger
                },
                add(data) {
                    this.sonText = data;
                    console.log(this.sonText)
                    console.log(this.obj)
                    // 传过来的值为对象时,在父组件初始化数据时,定义类型不要null和undfined; 定义类型为object
                    // data为传过来的数据. 
                }
            }
        })
    </script>
</body>

</html>